package mju.cxf.controller.admin;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import mju.cxf.enumeration.ImageType;
import mju.cxf.result.Result;
import mju.cxf.service.PhotoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Objects;
@RestController
@Api(tags = "图片相关api")
@RequestMapping("/admin/api/photo")
public class PhotoController {
    //获取图片业务类
    @Autowired
    private PhotoService photoService;
    /**
     * 修改头像并进行回显
     * @param file 上传的图片文件，不能为空。用作上传分类图片商品图片。
     * @param imageType 上传的图片文件类型 枚举
     * @return 返回包含图片 URL 的结果对象，如果加载失败则返回错误信息。
     */
    @PostMapping("/upload")
    @ApiOperation("图片回显")
    public Result<String> uploadImg(@RequestParam("file") MultipartFile file, @RequestParam String imageType) {
        if (Objects.isNull(file)){
            return Result.error("图片加载失败");
        }else{
            //调用存储图片并获取url方法
            String url = photoService.uploadImg(file, ImageType.valueOf(imageType.toUpperCase()).getPath());
            return Result.success(url);
        }
    }
    /**
     * 图片多个上传并进行回显
     * @param files 上传的图片文件，不能为空。用作上传分类图片商品图片。
     * @param imageType 上传的图片文件类型 枚举
     * @return 返回包含图片 URL 的结果对象，如果加载失败则返回错误信息。
     */
    @PostMapping("/uploads")
    @ApiOperation("存储多个图片")
    public Result<String> uploadImg(@RequestPart("file")List<MultipartFile> files, @RequestParam String imageType) {
        if (Objects.isNull(files)){
            return Result.error("图片加载失败");
        }else{
            //调用存储图片并获取JSON方法
            String url = photoService.uploadImgs(files, ImageType.valueOf(imageType.toUpperCase()).getPath());
            return Result.success(url);
        }
    }
}
